SUBROUTINE SetSpecificProperties &
!
( method, ini, mask )
IMPLICIT NONE
!Arguments with intent(in):
INTEGER (KIND = short), INTENT(in) :: method
TYPE (IniList) , INTENT(in) :: ini
TYPE (grid_integer) , INTENT(in) :: mask
!----------------------------end of declarations-------------------------------
!set data specific for each interpolation method
SELECT CASE (method)
CASE (1) !thiessen
CALL NewGrid (interpolatedMap (1), mask, 0.)
CASE (2) !inverse distance
CALL NewGrid (interpolatedMap (2), mask, 0.)
!nearest-points
IF (KeyIsPresent ('nearest-points', ini, &
section = 'temperature-daily-mean') ) THEN
neighbors = IniReadInt ('nearest-points', ini, &
section = 'temperature-daily-mean')
ELSE !nearest-points missing
CALL Catch ('error', 'AirTemperatureDailyMean', &
'nearest-points missing in meteo configuration file')
END IF
CASE (3) !kriging
CALL NewGrid (interpolatedMap (3), mask, 0.)
!nearest-points
IF (KeyIsPresent ('nearest-points', ini, &
section = 'temperature-daily-mean') ) THEN
neighbors = IniReadInt ('nearest-points', ini, &
section = 'temperature-daily-mean')
CALL Catch ('info', 'AirTemperatureDailyMean', &
'neighbors set to: ', argument = ToString (neighbors) )
ELSE !nearest-points missing
CALL Catch ('error', 'AirTemperatureDailyMean', &
'nearest-points missing in meteo configuration file')
END IF
!kriging-variance
IF (KeyIsPresent ('kriging-variance', ini, &
section = 'temperature-daily-mean') ) THEN
krige_var = IniReadInt ('kriging-variance', ini, &
section = 'temperature-daily-mean')
CALL Catch ('info', 'AirTemperatureDailyMean', &
'kriging variance export set to ', argument = ToString(krige_var) )
ELSE !kriging-variance missing
krige_var = 0
CALL Catch ('info', 'AirTemperatureDailyMean', &
'kriging variance export set to default (0)')
END IF
!kriging-anisotropy
IF (KeyIsPresent ('kriging-anisotropy', ini, &
section = 'temperature-daily-mean') ) THEN
krige_anisotropy = IniReadInt ('kriging-anisotropy', ini, &
section = 'temperature-daily-mean')
CALL Catch ('info', 'AirTemperatureDailyMean', &
'kriging anisotropy set to: ', argument = ToString (krige_anisotropy) )
ELSE !kriging-anisotropy missing
krige_anisotropy = 0
CALL Catch ('info', 'AirTemperatureDailyMean', &
'kriging anisotropy set to default (0)')
END IF
!kriging-variogram-model
IF (KeyIsPresent ('kriging-variogram-model', ini, &
section = 'temperature-daily-mean') ) THEN
krige_varmodel = IniReadInt ('kriging-variogram-model', ini, &
section = 'temperature-daily-mean')
CALL Catch ('info', 'AirTemperatureDailyMean', &
'kriging variogram model set to: ', argument = ToString (krige_varmodel) )
IF (krige_varmodel == 0 ) krige_varmodel = 5 !automatic fitting
ELSE !kriging-variogram-model
krige_varmodel = 2
CALL Catch ('info', 'AirTemperatureDailyMean', &
'kriging variogram model set to default (2 exponential)')
END IF
!kriging-lags
IF (KeyIsPresent ('kriging-lags', ini, &
section = 'temperature-daily-mean') ) THEN
krige_lags = IniReadInt ('kriging-lags', ini, &
section = 'temperature-daily-mean')
IF (krige_lags == 0) krige_lags = 15
CALL Catch ('info', 'AirTemperatureDailyMean', &
'kriging lags set to: ', argument = ToString (krige_lags) )
ELSE !kriging-variogram-model
krige_lags = 15
CALL Catch ('info', 'AirTemperatureDailyMean', &
'kriging lags set to default (15)')
END IF
!kriging-maxlag
IF (KeyIsPresent ('kriging-maxlag', ini, &
section = 'temperature-daily-mean') ) THEN
krige_maxlag = IniReadInt ('kriging-maxlag', ini, &
section = 'temperature-daily-mean')
CALL Catch ('info', 'AirTemperatureDailyMean', &
'kriging max lag set to: ', argument = ToString (krige_maxlag) )
ELSE !kriging-maxlag missing
krige_maxlag = 0
CALL Catch ('error', 'AirTemperatureDailyMean', &
'kriging max lag set to default (0)')
END IF
END SELECT
RETURN
END SUBROUTINE SetSpecificProperties